﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tibet.Logica.FabricaLogica;
using Tibet.Entidades;

namespace Tibet.Logica.Comandos.ComandoMotorRegla
{
    public class ComandoValidarArchivo: CrearRegla
    {
        // ruta, int idproyecto, int lider
        public override void Ejecutar()
        {
            Comando archivo = FabricaComandoRegla.ObtenerFabricaComandoParsear().ObtenerComandoParsear();
            archivo.Cadena = "ruta";//aqui se pasa la ruta
            archivo.Ejecutar();//crea perfil y se llena con lo que este en la base de datos
            
            PerfilRegla perfil = new PerfilRegla();
           // perfil = PerfilReglasProyecto.buscarReglas(Id);
            EntidadRegla regla = new EntidadRegla();
            Resultado Result = new Resultado();
            for (int i = 0; i == perfil.nombreRegla.Count; i++)
            {
                if (perfil.nombreRegla[i].Equals("ParentesisCEF"))
                {
                    //regla = new LogicaReglaParentesis(1);
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis().ObtenerConsultarEspacioParentesisCEF();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ParentesisSE"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis().ObtenerConsultarEspacioParentesisSE();
                    com.Id = 2;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ParentesisEX"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis().ObtenerConsultarEspacioParentesisEX();
                    com.Id = 3;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ParentesisIN"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis().ObtenerConsultarEspacioParentesisIN();
                    com.Id = 4;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ConEspacio"))
                {
                    //regla = new LogicaReglaOperadores(1);
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioOperadores().ObtenerFabricaConsultarEspacioOperadoresConEspacio();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("SinEspacio"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioOperadores().ObtenerFabricaConsultarEspacioOperadoresSinEspacio();
                    com.Id = 2;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("Mayuscula_NoUnderscore"))
                {
                    //regla = new LogicaReglaNombrarClases(1);
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase().ObtenerConsultarNombreClaseMayusNoUnder();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("Mayuscula_SiUnderscore"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase().ObtenerConsultarNombreClaseMayusSiUnder();
                    com.Id = 2;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("Minuscula_NoUnderscore"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase().ObtenerConsultarNombreClaseMinusNoUnder();
                    com.Id = 3;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("Minuscula_SiUnderscore"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase().ObtenerConsultarNombreClaseMinusSiUnder();
                    com.Id = 4;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("regla_LlavesSolas"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarLlaves().ObtenerConsultarLlavesSolas();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("regla_LlavesJuntas"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarLlaves().ObtenerConsultarLlavesJuntas();
                    com.Id = 2;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("regla_LlavesCompJS"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarLlaves().ObtenerConsultarLlavesCompJS();
                    com.Id = 3;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("regla_LlavesCompSJ"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarLlaves().ObtenerConsultarLlavesCompSJ();
                    com.Id = 4;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ComentarClase"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarDocumentClase().ObtenerFabricaConsultarDocumentClaseDobleSlash();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ComentarEstructura"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarDocumentEstructura().ObtenerFabricaConsultarDocumentClaseDobleSlash();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ComentarBoilerPlate"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarComentarioBoilerplate();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ComentarMetodo"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarDocumentMetodo().ObtenerConsultarDocumentMetodoDobleSlash();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla.Equals("AtributoMayuscula"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreAtributo().ObtenerConsultarNombreAtributoMayuscula();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla.Equals("AtributoMinuscula"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreAtributo().ObtenerConsultarNombreAtributoMinuscula();
                    com.Id = 2;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla.Equals("MetodoM"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreMetodo().ObtenerConsultarNombreMetodoNombre();
                    com.Id = 1;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla.Equals("MetodoN"))
                {
                    Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreMetodo().ObtenerConsultarNombreMetodoNombreMetodo();
                    com.Id = 2;
                    com.Ejecutar();
                    ListaEntidad.Add(com.Entidad);
                    perfil.listaRegla.Add(com.Entidad as EntidadRegla);
                }
            }
            for (int i = 0; i == perfil.listaRegla.Count; i++)
            {
                regla = (EntidadRegla)perfil.listaRegla[i];

                
                if (Result.Respuesta == true)
                {
                    archivo.Cadena = "Parseo exitoso!";
                }
            }
           
        }
    }
}
